package com.fast.alden.common.exception;

import lombok.Getter;

@Getter
public enum BizExceptionEnum implements IBizExceptionEnum {
    /**
     * 实体为null
     */
    ENTITY_IS_NULL("Base_Entity_Exception_0001", "实体为空"),
    /**
     * 实体id字段为null
     */
    ENTITY_ID_IS_NULL("Base_Entity_Exception_0002", "实体id字段为空"),
    /**
     * 实体数据不存在
     */
    ENTITY_DATA_DOSE_NOT_EXIST("Base_Entity_Exception_0003", "ID为{0}的实体数据不存在"),
    /**
     * 部分实体数据不存在
     */
    PARTIAL_ENTITIES_DATA_DOSE_NOT_EXIST("Base_Entity_Exception_0004", "部分实体数据不存在"),
    /**
     * 实体不是树型结构
     */
    ENTITY_IS_NOT_TREE_NODE("Base_Entity_Exception_0005", "实体不是树型结构"),
    /**
     * 父节点不可以是自己
     */
    PARENT_NODE_CAN_NOT_BE_SELF("Base_Entity_Exception_0006", "父节点不可以是自己"),
    /**
     * 父节点不存在
     */
    PARENT_NODE_DOES_NOT_EXIST("Base_Entity_Exception_0007", "父节点不存在"),
    /**
     * 用户部门不可为空
     */
    USER_DEPARTMENT_CAN_NOT_BE_NULL("User_Exception_0001", "用户部门不可为空"),
    /**
     * 用户部门不存在
     */
    USER_DEPARTMENT_DOSE_NOT_EXIST("User_Exception_0002", "用户部门不存在"),
    /**
     * 用户管理中当前用户不可以修改自己，需使用个人中心修改个人信息，或者由其他用户修改
     */
    CURRENT_USER_CAN_NOT_UPDATE_SELF("User_Exception_0003", "用户管理中当前用户不可以修改自己，需使用个人中心修改个人信息，或者由其他用户修改"),
    /**
     * 用户管理中当前用户不可以删除自己，需使由其他用户操作
     */
    CURRENT_USER_CAN_NOT_DELETE_SELF("User_Exception_0004", "用户管理中当前用户不可以删除自己，需使由其他用户操作"),
    /**
     * 用户名不可为空
     */
    USERNAME_CANT_BE_EMPTY("User_Exception_0005", "用户名不可为空"),
    /**
     * 用户名已存在
     */
    USERNAME_EXISTS("User_Exception_0006", "用户名已存在"),
    /**
     * 手机号不可为空
     */
    PHONE_CANT_BE_EMPTY("User_Exception_0007", "手机号不可为空"),
    /**
     * 手机号已存在
     */
    PHONE_EXISTS("User_Exception_0008", "手机号已存在"),
    /**
     * 邮箱不可为空
     */
    EMAIL_CANT_BE_EMPTY("User_Exception_0009", "邮箱不可为空"),
    /**
     * 邮箱已存在
     */
    EMAIL_EXISTS("User_Exception_0010", "邮箱已存在"),
    /**
     * 验证码错误
     */
    VERIFY_CODE_IS_WRONG("Auth_Exception_0001", "验证码错误"),
    /**
     * 验证码过期
     */
    VERIFY_CODE_IS_EXPIRED("Auth_Exception_0002", "验证码过期"),
    /**
     * 用户不存在
     */
    USER_DOSE_NOT_EXIST("Auth_Exception_0003", "用户名或密码错误"),
    /**
     * 用户密码错误
     */
    USER_PASSWORD_IS_WRONG("Auth_Exception_0004", "用户名或密码错误"),
    /**
     * 用户没有登录
     */
    USER_DOSE_NOT_LOGGED_IN("Auth_Exception_0005", "用户没有登录"),
    /**
     * 用户权限不足
     */
    USER_PERMISSION_IS_LACK("Auth_Exception_0006", "用户权限不足"),
    /**
     * 不是当前用户
     */
    USER_ID_IS_NOT_CURRENT("Profile_Exception_0001", "不是当前用户"),
    /**
     * 旧密码错误
     */
    USER_OLD_PASSWORD_IS_WRONG("Profile_Exception_0002", "旧密码错误"),
    /**
     * 新旧密码相同
     */
    NEW_PASSWORD_IS_SAME_AS_OLD_PASSWORD("Profile_Exception_0003", "新旧密码相同"),
    /**
     * 文件是空的
     */
    FILE_IS_EMPTY("File_Exception_0001", "文件是空的"),
    /**
     * 用户不能强制下线自己
     */
    USER_CANT_FORCE_LOGOUT_HIMSELF("OnlineUser_Exception_0001", "用户不能强制下线自己"),
    /**
     * 目录的父级必须是目录或者置空
     */
    THE_PARENT_OF_DIRECTORY_MUST_BE_DIRECTORY_OR_NULL("Menu_Exception_0001", "目录的父级必须是目录或者置空"),
    /**
     * 菜单的父级必须是目录或者置空
     */
    THE_PARENT_OF_MENU_MUST_BE_DIRECTORY_OR_NULL("Menu_Exception_0002", "菜单的父级必须是目录或者置空"),
    /**
     * 按钮的父级必须是菜单
     */
    THE_PARENT_OF_BUTTON_MUST_BE_MENU("Menu_Exception_0003", "按钮的父级必须是菜单"),
    /**
     * 按钮的类型不可为空
     */
    MENU_TYPE_MUST_BE_NOT_NULL("Menu_Exception_0004", "按钮的类型不可为空"),
    /**
     * 按钮的父级不可为空
     */
    THE_PARENT_OF_BUTTON_MUST_BE_NOT_NULL("Menu_Exception_0005", "按钮的父级不可为空"),
    /**
     * 菜单路由不可为空
     */
    THE_ROUTE_OF_MENU_MUST_BE_NOT_NULL("Menu_Exception_0006", "菜单路由不可为空"),
    /**
     * 异步菜单部署路径不可为空
     */
    THE_PATH_OF_ASYNC_MENU_MUST_BE_NOT_NULL("Menu_Exception_0007", "异步菜单部署路径不可为空"),
    /**
     * 菜单路由不可重复
     */
    THE_ROUTE_OF_MENU_MUST_BE_UNIQUE("Menu_Exception_0008", "菜单路由不可重复"),
    /**
     * 菜单模式不可为空
     */
    THE_MODE_OF_MENU_MUST_BE_NOT_NULL("Menu_Exception_0009", "菜单模式不可为空"),
    /**
     * 菜单URL不可为空
     */
    THE_URL_OF_MENU_MUST_BE_NOT_NULL("Menu_Exception_0010", "菜单URL不可为空");

    private final String code;
    private final String message;

    BizExceptionEnum(String code, String message) {
        this.code = code;
        this.message = message;
    }
}
